#ifndef PARSERTABLEROS_H_
#define PARSERTABLEROS_H_

#define MAGICA -4
#define ELEMENTO_FIJO_SALTADO -3
#define ELEMENTO_FIJO_A_SALTAR -2
#define DESAPARECIO -1
#define ELEM_CAER 0

#include <jsoncpp/json.h>
#include <list>
#include <iostream>
#include "Log.h"
#include <sstream>
#include "Constantes.h"


class ParserTableros {
    Json::Value* tableros;
    int cantFil, cantCol;
    int tableroCayendo[MAX_DIMENSION][MAX_DIMENSION];
    int fichasDesaparecidas;

    Json::Value obtenerFichasQueDesaparecieron(Json::Value& tablero);
    Json::Value obtenerFichasQueCaeran(Json::Value& vecFichasDesaparecer, 
                                        Json::Value& tab_desapariciones);
    Json::Value obtenerFichasRamdom(Json::Value& tableroGravedad,
        Json::Value& tableroRamdon);
    void almacenarTableroDeVerificacion(std::list<Json::Value> *);

    void cargarTableroFichasCayendo();
    void iniTableroFichasCayendo(Json::Value& tab_desapariciones);
    Json::Value tomarFichasQueCaeran();

  public:
    ParserTableros(Json::Value& tableros, int fil, int col);
    virtual ~ParserTableros();

    std::list<Json::Value> *obtenerAnimaciones();
};

#endif
